<!-- 
    let和块级作用域

    函数作用域

    块级作用域 {}
    
    let关键字特点 
        只是let存在暂时性死区 （在赋值之前读写变量都会导致 ReferenceError 的报错。从代码块(block)起始到变量求值(包括赋值)以前的这块区域，称为该变量的暂时性死区。）

        不允许重复声明

        块级作用域的出现，实际上使得获得广泛应用的匿名立即执行函数表达式（匿名 IIFE）不再必要了

    const关键字
        不会变化的数据，有些时候有的数据是不允许修改的，所以需要定义常量

        声明的常量如果是对象，可以修改对象的内容

        也拥有暂时性死区

        不可重复声明

    变量解构赋值 
            let [a, b, c, d] = [1, 2, 3, 4];
            let [a, [b, c, d], e] = [1, [2, 3, 4], 5]

            let { x, y = 10 } = { x: 1 };
            let obj = { a: 1, b: [2, 3, 4] }
            let { a, b: [b1, b2, b3] } = obj;

     模版字符串
            `${}`

     字符串新增的方法
            trim():删除字符串两端的空白符

            includes判断字符串是否包含某个字符串

     扩展运算符
            扩展运算符（spread）是三个点（...）。它好比 rest 参数的逆运算，将一个数组转为用逗号分隔的参数序列，目前也可以用来展开数组。

     Array对象的新方法
            Array.from 把伪数组转换成数组(可以使用数组的方法)
            Array.of 将一组数字转换成数组 弥补Array的不足


    函数参数默认值
            function fn2(a, b = "world") {
                console.log(a, b);
            }  
            
    rest参数    
            剩余参数function fn3(a,b,...arg){}

    箭头函数  ()=>{}

    Math的扩展
             pow的方法 用来计算一个值的n次方


    对象的简写
           在es6中，对象的key和value如果相同，则可以简写
           let p2 = {
                name:name,
                age,
                sex
            }     


    新增数据类型
            Symbol  
            BigInt

    新增数据结构
            ES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的，没有重复的值
            let st = new Set([1, 2, 3, 4, 4, 3, 3, 1, 5]);

    class
        类   

    Promise  管理异步编程
 -->
